1 module hip.event.api; 2 public import hip.global.gamedef; 3 public import hip.event.handlers.inputmap; 4 public import hip.api.input.button:HipButton; 5 public import hip.api.renderer.viewport:Viewport; 6 import hip.hiprenderer; 7 import hip.event.dispatcher; 8 import hip.systems.game; 9 import hip.math.vector; 10 11 export extern(System) 12 { 13 14 bool isKeyPressed(char key, uint id = 0) 15 { 16 return sys.dispatcher.isKeyPressed(key, id); 17 } 18 bool isKeyJustPressed(char key, uint id = 0) 19 { 20 return sys.dispatcher.isKeyJustPressed(key, id); 21 } 22 bool isKeyJustReleased(char key, uint id = 0) 23 { 24 return sys.dispatcher.isKeyJustReleased(key, id); 25 } 26 float getKeyDownTime(char key, uint id = 0) 27 { 28 return sys.dispatcher.getKeyDownTime(key, id); 29 } 30 float getKeyUpTime(char key, uint id = 0) 31 { 32 return sys.dispatcher.getKeyUpTime(key, id); 33 } 34 ubyte getMulticlickCount(HipMouseButton btn = HipMouseButton.any, uint id = 0) 35 { 36 return sys.dispatcher.getMulticlickCount(btn, id); 37 } 38 bool isDoubleClicked(HipMouseButton btn = HipMouseButton.any, uint id = 0) 39 { 40 return sys.dispatcher.isDoubleClicked(btn, id); 41 } 42 bool isMouseButtonPressed(HipMouseButton btn = HipMouseButton.any, uint id = 0) 43 { 44 return sys.dispatcher.isMouseButtonPressed(btn, id); 45 } 46 bool isMouseButtonJustPressed(HipMouseButton btn = HipMouseButton.any, uint id = 0) 47 { 48 return sys.dispatcher.isMouseButtonJustPressed(btn, id); 49 } 50 bool isMouseButtonJustReleased(HipMouseButton btn = HipMouseButton.any, uint id = 0) 51 { 52 return sys.dispatcher.isMouseButtonJustReleased(btn, id); 53 } 54 float[2] getTouchPosition(uint id=0) 55 { 56 return cast(float[2])sys.dispatcher.getTouchPosition(id); 57 } 58 59 60 float[2] getNormallizedTouchPosition(uint id=0) 61 { 62 import hip.hiprenderer; 63 float[2] ret = cast(float[2])sys.dispatcher.getTouchPosition(id); 64 ret[0]/= HipRenderer.width; 65 ret[1]/= HipRenderer.height; 66 return ret; 67 } 68 69 float[2] getWorldTouchPosition(uint id=0, Viewport vp = null) 70 { 71 import hip.math.utils:clamp; 72 float[2] ret = cast(float[2])sys.dispatcher.getTouchPosition(id); 73 if(vp is null) 74 vp = HipRenderer.getCurrentViewport(); 75 76 ret[0] = clamp(((ret[0] - vp.x) / vp.width) * vp.worldWidth, 0, vp.worldWidth); 77 ret[1] = clamp(((ret[1] - vp.y) / vp.height) * vp.worldHeight, 0, vp.worldHeight); 78 79 80 return ret; 81 } 82 float[2] getTouchDeltaPosition(uint id=0) 83 { 84 return cast(float[2])sys.dispatcher.getTouchDeltaPosition(id); 85 } 86 float[3] getScroll() 87 { 88 return cast(float[3])sys.dispatcher.getScroll(); 89 } 90 ubyte getGamepadCount() 91 { 92 return sys.dispatcher.getGamepadCount(); 93 } 94 AHipGamepad getGamepad(ubyte id) 95 { 96 return sys.dispatcher.getGamepad(id); 97 } 98 bool setGamepadVibrating(float vibrationPower, float time, ubyte id = 0) 99 { 100 return sys.dispatcher.setGamepadVibrating(vibrationPower, time, id); 101 } 102 float[3] getAnalog(HipGamepadAnalogs analog, ubyte id = 0) 103 { 104 return cast(float[3])sys.dispatcher.getAnalog(analog); 105 } 106 bool isGamepadButtonPressed(HipGamepadButton btn, ubyte id = 0) 107 { 108 return sys.dispatcher.isGamepadButtonPressed(btn, id); 109 } 110 bool isGamepadButtonJustPressed(HipGamepadButton btn, ubyte id = 0) 111 { 112 return sys.dispatcher.isGamepadButtonJustPressed(btn, id); 113 } 114 bool isGamepadButtonJustReleased(HipGamepadButton btn, ubyte id = 0) 115 { 116 return sys.dispatcher.isGamepadButtonJustReleased(btn, id); 117 } 118 bool areGamepadButtonsPressed(scope HipGamepadButton[] btns, ubyte id = 0) 119 { 120 return sys.dispatcher.areGamepadButtonsPressed(btns, id); 121 } 122 bool areGamepadButtonsJustPressed(scope HipGamepadButton[] btns, ubyte id = 0) 123 { 124 return sys.dispatcher.areGamepadButtonsJustPressed(btns, id); 125 } 126 bool areGamepadButtonsJustReleased(scope HipGamepadButton[] btns, ubyte id = 0) 127 { 128 return sys.dispatcher.areGamepadButtonsJustReleased(btns, id); 129 } 130 131 float getGamepadBatteryStatus(ubyte id = 0) 132 { 133 return sys.dispatcher.getGamepadBatteryStatus(id); 134 } 135 bool isGamepadWireless(ubyte id = 0) 136 { 137 return sys.dispatcher.isGamepadWireless(id); 138 } 139 140 const(HipButton)* addKeyboardListener(HipKey key, 141 HipInputAction action, 142 HipButtonType type = HipButtonType.down, 143 AutoRemove remove = AutoRemove.no) 144 { 145 return sys.scriptInputListener.addKeyboardListener(key,action,type,remove); 146 } 147 148 const(HipButton)* addTouchListener(HipMouseButton btn, 149 HipInputAction action, 150 HipButtonType type = HipButtonType.down, 151 AutoRemove remove = AutoRemove.no) 152 { 153 import hip.console.log; 154 logln("Added touch"); 155 return sys.scriptInputListener.addTouchListener(btn,action,type,remove); 156 } 157 158 const(ScrollListener)* addScrollListener(HipScrollAction onScroll, 159 AutoRemove remove = AutoRemove.no) 160 { 161 return sys.scriptInputListener.addScrollListener(onScroll, remove); 162 } 163 164 const(TouchMoveListener)* addTouchMoveListener(HipTouchMoveAction onMove, 165 AutoRemove remove = AutoRemove.no) 166 { 167 return sys.scriptInputListener.addTouchMoveListener(onMove, remove); 168 } 169 170 bool removeKeyboardListener(const(HipButton)* btn) 171 { 172 return sys.scriptInputListener.removeKeyboardListener(btn); 173 } 174 bool removeTouchListener(const(HipButton)* btn) 175 { 176 return sys.scriptInputListener.removeTouchListener(btn); 177 } 178 bool removeScrollListener(const(ScrollListener)* l) 179 { 180 return sys.scriptInputListener.removeScrollListener(l); 181 } 182 bool removeTouchMoveListener(const(TouchMoveListener)* l) 183 { 184 return sys.scriptInputListener.removeTouchMoveListener(l); 185 } 186 187 188 }